package com.admin.mapper;

import com.admin.entity.Station;
import com.admin.entity.TerminalKey;
import com.admin.excelList.TerminalListkey;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author marisheng
 * @since 2019-11-21
 */
public interface TerminalKeyMapper extends BaseMapper<TerminalKey> {

    /**
     * 查看该终端下以使用的密钥信息  和   根据开始时间和结束时间进行条件模糊查询详情
     * @param p
     * @param map  终端编号 开始时间  结束时间
     * @return
     */
    public IPage findByTimeORFindAll(Page p, @Param("m") Map map);

    //通过站点编号 查询站点下面所有未使用的密钥
    public List<Map> selectTerminalPasswordById(Integer station_id);

    /**
     * 通过终端id查询该终端是否在使用密钥 使用了直接return
     * @param terminal_id
     * @return
     */
    @Select("select terminal_key from terminal where terminal_id=#{terminal_id}")
    public String checkTerminalPassword(Integer terminal_id);

    /**
     * 根据站点编号来查询站点下的所有密钥  并做分页根据搜索条件
     * @param page  分页参数
     * @param map   查询条件
     * @return
     */
    public IPage findByStationIdQueryPassword(Page page,@Param("m") Map map);

    /**
     * 导出Excel
     * @param page
     * @param map
     * @return
     */
    public IPage findByStationIdQueryPasswordExcel(Page page,@Param("m") Map map);

    /**
     * 根据站点id 来查询终端密钥为空的
     * @param page
     * @param map
     * @return
     */
    public  IPage findByStationIdQueryTerminal(Page page, @Param("m") Map map);

    //1.把时间更新在终端密钥表中 并修改状态
    @Update("update terminal_key SET terminal_key_begin_time=#{startTime},terminal_key_end_time=#{endTime}," +
            "terminal_key_status='使用中',terminal_key=#{terminal_key} WHERE terminal_key_id=#{id}")
    public int updateKeyTimeAndStatus(String startTime,String endTime,Integer terminal_key,Integer id);

    //2.密钥值更新在终端表中(密钥授权)
    @Update("UPDATE terminal set terminal_key=#{terminal_key_value},terminal_key_id=#{terminal_key_id} where terminal_id=#{terminal_id}")
    public int updatePassword(@Param("terminal_key_value") String terminal_key_value, @Param("terminal_key_id") Integer terminal_key_id, @Param("terminal_id") Integer terminal_id);

//    //2.密钥值更新在终端表中(密钥授权)
//    @Update("UPDATE terminal set terminal_key=#{terminal_key_value},terminal_key_id=#{terminal_key_id},terminal_key_room=#{terminal_key_room},terminal_key_room_type=#{terminal_key_room_type} where terminal_id=#{terminal_id}")
//    public int updatePasswordRoom(@Param("terminal_key_value") String terminal_key_value, @Param("terminal_key_id") Integer terminal_key_id, @Param("terminal_id") Integer terminal_id,@Param("terminal_key_room") Integer terminal_key_room,@Param("terminal_key_room_type") String terminal_key_room_type);

    //2.密钥值更新在终端表中(密钥授权)
    @Update("UPDATE terminal_key set terminal_key_room=#{terminal_key_room},terminal_key_room_type=#{terminal_key_room_type} where terminal_key_id=#{terminal_key_id}")
    public int updatePasswordRoom( @Param("terminal_key_id") Integer terminal_key_id,@Param("terminal_key_room") Integer terminal_key_room,@Param("terminal_key_room_type") String terminal_key_room_type);

    /**
     * 查询所有密钥分页显示
     * @param page
     * @param map
     * @return
     */
    public IPage selectTerminalKeys(Page page, @Param("m")Map map);

    @Update("update terminal SET terminal_total_online_time=terminal_total_online_time+#{cha} where terminal_id=#{id}")
    public int updateTotalTime(int cha,int id);

    //3.房间类型添加到终端密钥表里面
    @Update("UPDATE terminal_key set terminal_room_type=#{terminal_room} where terminal_key_id=#{terminal_key_id}")
    public int updateKeyTimeAndStatus2(@Param("terminal_room") String terminal_room,@Param("terminal_key_id") Integer terminal_key_id);

    public  List<TerminalListkey> selectTerminalKeysExcel();
}
